using Xunit;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Reflection;
using System;

namespace LeetCodeQuestionBank.Algorithm
{
    public class No0263_IsUgly
    {
        /*
        给你一个整数 n ，请你判断 n 是否为 丑数 。如果是，返回 true ；否则，返回 false 。
        丑数 就是只包含质因数 2、3 和/或 5 的正整数。
        示例 1：
            输入：n = 6
            输出：true
            解释：6 = 2 × 3
        示例 2：
            输入：n = 8
            输出：true
            解释：8 = 2 × 2 × 2
        示例 3：
            输入：n = 14
            输出：false
            解释：14 不是丑数，因为它包含了另外一个质因数 7 。
        示例 4：
            输入：n = 1
            输出：true
            解释：1 通常被视为丑数。
        提示：
            -231 <= n <= 231 - 1
        */

        [Theory]
        [InlineData(6, true)]
        [InlineData(8, true)]
        [InlineData(14, false)]
        [InlineData(1, true)]
        public void OnExecute(int num, bool result)
        {
            Assert.Equal(result, IsUgly(num));
        }

        public bool IsUgly(int n)
        {
            if (n <= 0)
                return false;
            int[] factors = { 2, 3, 5 };
            foreach (int item in factors)
            {
                while (n % item == 0)
                {
                    n /= item;
                }
            }
            return n == 1;
        }
    }
}
